<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>call方法应用</title>
</head>

<body>
    <script>
        function fn(x, y) {
            console.log("我想你了");
            console.log(this);
            console.log(x + y);
        }
        // fn()
        var o = {
            name: 'o'
        }
        // 1.call方法 最好是实现继承
        fn.call(o, 1, 2)

        function Fn1() {
            this.showTxt = function (text) {
                console.log(text);
            }
        }

        function Fn2() {
            Fn1.call(this);
        }
        var c2 = new Fn2();
        c2.showTxt("hh");
        console.log("*************----------------------*********");

        // 2.apply方法 参数必须是数组
        function fna(arr) {
            console.log(this);
            console.log(arr);
        }
        fna.apply(o, ['pink'])
        var arr = [12, 23, 45, 13, 67, 34]
        var max = Math.max.apply(Math, arr)
        console.log(max);
        console.log("*************----------------------*********");
        // 3.bind方法  不会调用原函数 返回this值，实现原函数拷贝
        function fnb() {
            console.log(this);
        }
        var f = fnb.bind(o)
        f()
    </script>
</body>

</html>